package polytech.tod.maplib.modele;

public class Unite {
     
	 //Attributs
	 private Point position = null;
     final int vitesse = 1;
     public Unite()
  
    //Valeur si ya pas d'installation sur une case
     {
       position = new Point(-1,-1); 
     }

     //Méthode qui renvoie la position d'un point
     public Point getPosition() {
       return position;
     }	
    //Méthode setteur
    public void setPosition(Point p){ 
    	position = p;
    	
    }

    //Méthode qui retourne le déplacement si possible
    public boolean Deplacer(Point mouvement, Carte carte) {

    	// l'unité n'est pas installé, faut l'installer avant de la déplacer	
    	if(position.x < 0 || position.y < 0) return false; 

        if(mouvement.distance() > vitesse) return false;

        Point newPos = Point.Add(position,mouvement);
        if(!newPos.EstDansLinterval(Point.Zero,carte.getTaille()))
        return false;

        if(position.EstDansLinterval(Point.Zero,carte.getTaille()))
        carte.CaseFromPos(position).CleanUnite();

        carte.CaseFromPos(newPos).installerUnite(this);
        return true;	
     }
}

